/**
 * 20190901@JAR:架构重整，修改[f.l]及[i]、添加[n.r]；
 * 20190829@JAR:添加[jrl]循环事件；
 * 20190827@JAR:添加[jre]前端激活按钮；
 * 20190826@JAR:添加[jrf]指令及整合代码结构；
 * 20190808@JAR:添加[jrb]及[jri]功能；
 * 20190801@JAR:简易游戏测试脚本（jrx）；
 * 
 * 测试用工具'jr:obj'
 *
 * 1. jrn:obj - 常量配署
 * 1.1. jrn.u:num -- 交易单量
 * 1.2. jrn.r:arr -- 交易品种(数值)
 * 1.3. jrn.d:arr -- 备选资源(字串)
 * 2. jrf:obj - 常用脚本
 * 2.1. jrf.x:fun -- 分配箱子
 * 2.2. jrf.b:fun -- 快速卖出
 * 2.3. jrf.a:fun -- 史前增值
 * 2.4. jrf.e:fun -- 前端激活
 * 2.5. jrf.l:fun -- 事件设定
 * 3. jri:str - 常规解说(控制台加色)
 * 4. jrt:num - 事件标记
 * 
 * 注意：
 * 分配箱子功能需要先激活【物资额外存储界面】；
 * 脚本使用需先在htm添加引用、使用时在控制台输入指令。
 *
 */

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//0.配置全局变量
var jr = {
  jrn/*1*/:{
    u/*1.1*/: 1000,
    r/*1.2*/: [1],
    d/*1.3*/: [
      ['(0.试试卖掉所有没用的资源)'],
      ['(1.食物|灵魂)','cntFood','market-Food'],
      ['(2.木材)','cntLumber','market-Lumber'],
      ['(3.石头)','cntStone','market-Stone'],
      ['(4.皮毛|肉)','cntFurs','market-Furs'],
      ['(5.铜)','cntCopper','market-Copper'],
      ['(6.铝)','cntAluminium','market-Aluminium'],
      ['(7.煤)','cntCoal','market-Coal'],
      ['(8.石油)','cntOil','market-Oil'],
      ['(9.钢)','cntSteel','market-Steel'],
      ['(10.氦3)','cntHelium_3','market-Helium_3']
    ]
  },
  jrf/*2*/:{
    x/*2.1*/: function(){},
    b/*2.2*/: function(){},
    a/*2.3*/: function(){},
    e/*2.4*/: function(){},
    l/*2.5*/: function(){},
  },
  jri/*3*/: 'tool-20190827\n',
  jrt/*4*/: 0,

};
(function(){
  //2.1.构建或取消分配箱子
  jr.jrf.x = function(){
    let
      n=parseInt(arguments[0])||0,
      r=[]
    ;
    r = document
        .getElementsByClassName('modalBody')[0]
        .children
    ;
    if(n<1){
      console.log('plan'+n);
      for(let i=0; i>n; i--){
        r[0].children[2].children[0].click();
        r[1].children[2].children[0].click();
      }
    }else if(n>0){
      console.log('plan+'+n);
      for (let i=0; i<n; i++){
        r[0].children[1].children[0].click();
        r[0].children[3].children[0].click();
        r[1].children[1].children[0].click();
        r[1].children[3].children[0].click();
      }
    }
  };
  //2.2.快速卖出
  jr.jrf.b = function(){
    let/*2.21*/
      $x/*常量号*/=arguments[0]||jr.jrn.d.length,
      $b/*售货标*/=0,
      $m/*存量标*/=0,
      $s/*单货量*/=jr.jrn.u,
      $n/*售货次*/=0,
      se={}, sx={}, so='', st=0
    ;
    let $f/*2.22.售货行为*/=function(n){
      $b = jr.jrn.d[n][2],
      $m = jr.jrn.d[n][1],
      se = document.getElementById($b).childNodes[4],
      sx = document.getElementById($m).innerText.split(' / ')[0],
      so = sx.charAt(sx.length-1),
      st = Number(sx.split(so)[0]);
      if(so=='M'){
        $n=parseInt(st*1000000/$s);
      }
      else if(so=='K'){
        $n=parseInt(st*1000/$s);
      }
      else{
        $n=parseInt(st*10/$s);
      }
      console.log(jr.jrn.d[n][0]+'库存:',st+so,'出售'+$n+'次');
      for(let i=0;i<$n;i++){
        se.click();
      }
    };
    //2.23.[jrf.b]传参不是合理的资源序号时执行计划中全部资源的出售
    if($x<jr.jrn.d.length){
      $f($x);
      //注意：传参并未验证前端选择的售出标量，指令者应主观匹配之！
    }else if($x==jr.jrn.d.length){
      for(let i=1;i<$x;i++){
        $f(i);
      }
    }
  };
  //2.3.史前快捷
  jr.jrf.a = function(){
    //2.3.1.以下取前端标记
    let
      ec = document.getElementsByClassName('planet')[0],
      _check = ec.innerText
    ;
    if(_check == '史前'){
      eb = document.getElementById('evolution');
    } else {
      console.log(_check);
      eb = document.getElementById('city');
    }
    if(!eb) return;
    let
      //2.3.2.以下配署常量参数
      jd = [], jc = [],
      //2.3.3.以下配署元素参数
      sp = ( ''
        + 'float:right;'
        + 'width:3rem; height:2rem;'
        + 'background-color:snow; color:navy;'
      ),
      sb = ( ''
        + 'float:right;'
        + 'width:2rem;height:2rem;'
        + 'background-color:gray; color:peru;'
      ),
      //2.3.4.以下配署基本函数
      jk = function(){
        let
          s = this.parentNode.id + '-n',
          t = document.getElementById(s),
          n = Number(t.value)
        ;
        for (let i=0; i<n; i++){
          this.parentNode.children[0].click();
        }
      }
    ;
    //2.3.5.以下将元素配署前端
    for(let i=0; i<eb.children.length; i++){
      let
        e1={}, e2={}, em=eb.children[i]
      ;
      //2.3.51.数量标签设定
      e1 = document.createElement('input');
      e1.id = eb.children[i].id + '-n';
      e1.style = sp;
      e1.value = '100';
      //2.3.52.事件按钮设定
      e2 = document.createElement('button');
      e2.id = eb.children[i].id + '-u';
      e2.style = sb;
      e2.innerText = 'do';
      e2.onclick = jk;
      //2.3.53.前端元素嵌入
      em.appendChild(e1);
      em.appendChild(e2);
    }
  };
  //2.4.
  jr.jrf.e = function(){
    if(document.getElementById('jr-testing')) {
      console.log('无效指令[jre]');
      return;
    }
    let
      e = document.createElement('button')
    ;
    e.id = 'jr-testing';
    e.style = ( ''
      + 'width:4em;height:4em;'
      + 'float:right;display:block;'
      + 'background-color:cyan;color:red;'
      + 'line-height:4em;text-align:center;'
      + 'border-radius:50%;'
    );
    e.innerText = '量产';
    e.onclick = jr.jrf.a;
    document.getElementsByClassName('planet')[0].parentNode.appendChild(e);
    console.log(jr.jri);
  }
  //2.5.常用事件
  jr.jrf.l=function(){
    for(let i=0;i<arguments.length;i++){
      jr.jrn.r.push(arguments[i]);
    }
    jr.jrt=setInterval(
      function(){
        /*.1.定时出售资源*/
        for(let i=0;i<jr.jrn.r.length;i++){
           jr.jrf.b(jr.jrn.r[i]);
        }
        /*.2.定时转换科技*/
        document.getElementById('arpaSequence')
          .children[4].children[0]
          .click()
        ;
        console.log(
          '基因存量:'
          +document.getElementById('cntGenes').innerText
        );
        /*.3.循环脚本说明*/
        let
          $r = [
            '\n终止：',
            '  clearInterval(jr.jrt);',
            '\n启动：',
            '  jr.jrf.l();'
          ],
          $o = [
            'navy',
            'peru',
            'navy',
            'plum'
          ]
        ;
        for(let i=0;i<$r.length;i++){
          console.log('%c '+$r[i],'color:'+$o[i]);
        }
      },
      10*1000
    );   
  };
  //3.最后整合说明文本
  jr.jri += (
    '【常量配置】\n'
    + '单次售货量\n'+jr.jrn.u+'\n\njrf.b:\n'
  );
  for(let i=0;i<jr.jrn.d.length;i++){
    jr.jri += (
      jr.jrn.d[i][0]
      + '\n'
    );
  }  
  /**
   * 前端(htm)测试样例
   * 
  <!--测试[JR]工具--><script src='./jrTestingTool.js'></script>
  *
  */
})();


